package com.example.partyfee.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.partyfee.dto.SalaryDTO;
import com.example.partyfee.dto.SalaryQueryDTO;
import com.example.partyfee.entity.Salary;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * 工资服务接口
 */
public interface SalaryService extends IService<Salary> {
    /**
     * 创建工资数据
     *
     * @param salaryDTO 工资数据
     */
    void createSalary(SalaryDTO salaryDTO);

    /**
     * 更新工资数据
     *
     * @param id 工资数据ID
     * @param salaryDTO 工资数据
     */
    void updateSalary(Long id, SalaryDTO salaryDTO);

    /**
     * 删除工资数据
     *
     * @param id 工资数据ID
     */
    void deleteSalary(Long id);

    /**
     * 获取工资数据详情
     *
     * @param id 工资数据ID
     * @return 工资数据
     */
    Salary getSalary(Long id);

    /**
     * 导入工资数据
     *
     * @param file Excel文件
     * @param salaryMonth 工资月份（格式：yyyy-MM）
     * @return 错误信息列表
     * @throws IOException IO异常
     */
    List<String> importSalariesFromExcel(MultipartFile file, String salaryMonth) throws IOException;

    /**
     * 批量保存工资数据
     *
     * @param salaries 工资数据列表
     */
    void batchSaveSalaries(List<Salary> salaries);

    /**
     * 分页查询工资数据
     *
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    IPage<Salary> getSalaryPage(SalaryQueryDTO queryDTO);

    /**
     * 获取工资月份列表
     *
     * @return 月份列表（格式：yyyy-MM）
     */
    List<String> getSalaryMonths();

    /**
     * 导出工资数据
     *
     * @param queryDTO 查询条件
     * @param response HTTP响应
     * @throws IOException IO异常
     */
    void exportSalariesToExcel(SalaryQueryDTO queryDTO, HttpServletResponse response) throws IOException;
} 